#ifndef CLAVEINT_H_
#define CLAVEINT_H_

#include "DatoClave.h"
#include "../Bytes.h"
#include <iostream>

/*
 * Funcion: Clase para almacenar claves del tipo int.
 */
class ClaveInt: public DatoClave {
private:
	int valorInt;
public:

	/*
	 * Pre: -
	 * Pos: Crea una nueva instancia.
	 */
	ClaveInt(int clave);

	/*
	 * Pre: Clave valida.
	 * Pos: Crea una nueva instancia.
	 */
	ClaveInt(Bytes clave);

	/*
	 * Pre: -
	 * Pos: Libera los recursos intanciados.
	 */
	virtual ~ClaveInt();

	/*
	 * Pre: -
	 * Pos: Sobrecarga de operadores.
	 */
	virtual bool operator==(const DatoClave& otro)const;
	virtual bool operator<(const DatoClave& otro)const;
	virtual bool operator>(const DatoClave& otro)const;
	virtual bool operator<=(const DatoClave& otro)const;

	/*
	 * Pre: -
	 * Pos: serializa el estado del objeto.
	 */
	virtual Bytes serializarse();

	/*
	 * Pre: Bytes validos.
	 * Pos: Hidrata el estado del objeto.
	 */
	virtual bool hidratarse(const Bytes&);

	/*
	 * Pre: -
	 * Pos: Devuelve un string con el contenido de la clave.
	 */
	virtual std::string toString()const;

	/*
	 * Pre: -
	 * Pos: Crea una nueva instancia de ClaveInt con el mismo valor y la devuelve.
	 */
	virtual DatoClave* getCopia();
};

#endif /* CLAVEINT_H_ */
